package com.buba.controller;

import com.buba.service.FileService;
import com.buba.service.QiniuService;
import com.buba.service.UserService;
import entity.File;
import entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartRequest;
import result.CommonResult;

import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.*;

/**
 * @创建人: 胡亮
 * @创建时间: 2022年11月22日 上午 11:34
 * @描述:用户操作Controller层
 */
@RequestMapping("/User")
@RestController
@CrossOrigin
public class UserController {

    @Autowired
    private UserService userService;

    @Autowired
    private FileService fileService;

    @Autowired
    RedisTemplate redisTemplate;

    @Autowired
    RedisTemplate redisTemplates;

    @Autowired
    private QiniuService qiniuService;

    /**
     *
     * @创建人: 胡亮
     * @创建时间: 2023/03/03 上午 11:20
     * @参数1 file
     * @返回值 result.CommonResult
     * @描述: 将图片存入七牛云
     */
    @PostMapping("/testUpload")
    public CommonResult uploadImage(MultipartRequest file) {
        MultipartFile files = file.getFile("file");
        if(files.isEmpty()) {
            return CommonResult.fail("error");
        }

        try {
            File picture=qiniuService.saveImage(files);
            return CommonResult.ok(picture);
        } catch (IOException e) {
            e.printStackTrace();
        }
        return CommonResult.fail("fail");
    }
    /**
     *
     * @创建人: 胡亮
     * @创建时间: 2023/03/03 上午 11:07
     * @参数1 token
     * @返回值 entity.User
     * @描述: 获取当前登录用户的信息
     */
    @RequestMapping("/selectById")
    public CommonResult selectById(@RequestBody String token){
        //获取当前登录用户信息
        User o = (User)redisTemplate.opsForValue().get(token);
        //查登录用户所有信息
        User user = userService.selectById(o.getUserId());
        return CommonResult.ok(user);
    }

    /**
     *
     * @创建人: 胡亮
     * @创建时间: 2022/11/23 上午 11:18
     * @参数1 users
     * @返回值 java.util.Map
     * @描述:  修改个人资料
     */
    @PostMapping("/updateUser")
    public CommonResult updateUser(@RequestBody User users){
        //调用userService修改用户方法
        System.out.println("\n修改值"+users+"\n");
        int i = userService.update(users);
        Map<String, Object> map = new HashMap<>();
        if(i==1) {
            //前端判断
            map.put("state",true);
            //打印提示
            map.put("msg","修改成功");
        }
        return CommonResult.ok(map);
    }
    /**
     *
     * @创建人: 胡亮
     * @创建时间: 2023/03/03 上午 11:06
     * @参数1 file
     * @返回值 int
     * @描述: 新增图片
     */
    @PostMapping("/addPicture")
    public CommonResult addPicture(@RequestBody File file){

        //将图片信息存储入数据库
        fileService.insert(file);
        //返回新增图片id
        return CommonResult.ok(file.getFileId());
    }

    /**
     *
     * @创建人: 胡亮
     * @创建时间: 2023/03/03 上午 11:36
     * @参数1 fileId
     * @返回值 java.lang.String
     * @描述: 查找头像
     */
    @GetMapping("/pictureById/{fileId}")
    public CommonResult pictureById(@PathVariable Integer fileId){
        //返回图片对象
        File file= fileService.selectById(fileId);
        //返回头像路由
        return CommonResult.ok(file.getFilePath());
    }

}